import axios from 'axios';
import {ElMessage} from 'element-plus';
import router from '@/router/index';
import {localGet} from './index';
import config from '~/config';


// 这边由于后端没有区分测试和正式，姑且都写成一个接口。
console.log('默认请求地址为=>', config[import.meta.env.MODE].baseUrl);
axios.defaults.baseURL = config[import.meta.env.MODE].baseUrl;
// 携带 cookie，对目前的项目没有什么作用，因为我们是 token 鉴权
// axios.defaults.withCredentials = true
// 请求头，headers 信息
axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest';

console.log('现在的token', localGet('token'));
axios.defaults.headers['hw-token'] = localGet('token') || '';

// 默认 post 请求，使用 application/json 形式
axios.defaults.headers.post['Content-Type'] = 'application/json';

// 请求拦截器，内部根据返回值，重新组装，统一管理。
axios.interceptors.response.use((res) => {
  console.log('请求拦截器', res);
  if (res.data.code === '200') {
    console.log('请求成功');
    // ElMessage.success(res.data.msg || '请求成功')
    return res;
  } else if (res.data.code === '500') {
    // ElMessage.error(res.data.msg || '请求失败')
    return Promise.reject(res.data.msg);
  } else if (res.data.code === '401') {
    ElMessage.error(res.data.msg);
    router.push('/login');
  } else {
    // ElMessage.error(res.data.msg || '请求失败')
    return Promise.reject(res.data.msg);
  }
});

export default axios;
